package com.atguigu.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.atguigu.bean.User;
import com.atguigu.dao.UserDao;
import com.atguigu.dao.impl.UserDaoImpl;
import com.atguigu.service.UserService;
import com.atguigu.utils.MD5Util;

import java.util.List;

/**
 * projectName: javaweb
 *
 * @author: 赵伟风
 * time: 2022/7/2 14:18 周六
 * description:
 */
public class UserServiceImpl implements UserService {

    /**
     * 登录的业务方法
     *
     * @param username 账号
     * @param password 密码  明文
     * @return 登录成功还是失败
     */
    @Override
    public boolean login(String username, String password) {

        //3. 参数校验和处理
        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){
            //账号和密码为null，返回登录失败！
            return false;
        }
        //MD5加密处理下密码
        password = MD5Util.encode(password);

        //调用数据库层方法
        UserDao userDao = new UserDaoImpl();
        Long count = userDao.queryUser(username, password);

        //5. 数据库结果处理
        if (count>0){
            //登录成功
            return true;
        }
        return false;
    }


    /**
     * 用户展示业务
     *
     * @return 返回的用户信息集合
     */
    @Override
    public List<User> show() {
        //3. 参数校验
        //调用dao
        UserDao userDao =new UserDaoImpl();
        List<User> userList = userDao.queryAll();
        //5. 数据查询结果处理

        return userList;
    }

    /**
     * 根据关键字查询用户的信息
     *
     * @param name 查询的关键字，注意， 关键字为null,查询全部数据
     * @return 用户集合
     */
    @Override
    public List<User> search(String name) {

        //1.参数校验
        //com.alibaba.druid.util.StringUtils
        if (StringUtils.isEmpty(name)){
            //name为null;
            //展示全部数据
            return show();
        }
        //2.数据库查询
        UserDao userDao = new UserDaoImpl();
        //alt + 回车   / create method 快速创建方法
        List<User> userList = userDao.queryByName(name);

        //3.结果处理

        return userList;
    }

    /**
     * 根据id删除用户
     *
     * @param id id值
     */
    @Override
    public void remove(String id) {

        //1.参数校验
        if (StringUtils.isEmpty(id)){
            //id等于空，就不调用数据库，直接到展示页面！
            return;
        }
        //2.数据库调用
        UserDao userDao = new UserDaoImpl();
        userDao.deleteById(id);
        //3.数据处理
    }
}
